package 贪心;

import java.util.Arrays;
import java.util.Comparator;

/**
 * @author admin
 * @version 1.0.0
 * @ClassName 两地调度.java
 * @Description TODO
 * @createTime 2020年10月23日 17:23:00
 * 公司计划面试 2N 人。第 i 人飞往 A 市的费用为 costs[i][0]，飞往 B 市的费用为 costs[i][1]。
 *
 * 返回将每个人都飞到某座城市的最低费用，要求每个城市都有 N 人抵达。
 *
 *  
 *
 * 示例：
 *
 * 输入：[[10,20],[30,200],[400,50],[30,20]]
 * 输出：110
 * 解释：
 * 第一个人去 A 市，费用为 10。
 * 第二个人去 A 市，费用为 30。
 * 第三个人去 B 市，费用为 50。
 * 第四个人去 B 市，费用为 20。
 *
 * 最低总费用为 10 + 30 + 50 + 20 = 110，每个城市都有一半的人在面试。
 *
 * 这题知道答案之后会认为很简单 但实际上想的时候要考虑很多因素 反而不会这么想
 * 那到底什么时候能用贪心算法 什么时候不能用 怎么证明能用
 */
public class 两地调度 {
    public static void main(String[] args) {
        int[][] costs={{10,20},{30,200},{400,50},{30,20}};
        Arrays.sort(costs, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                int temp=o1[1]-o1[0];
                int map=o2[1]-o2[0];
                return map-temp;
            }
        });

        int sum=0;
        for(int i=0;i<costs.length;i++){
            if(i<costs.length/2){
                sum+=costs[i][0];
            }else {
                sum+=costs[i][1];
            }

        }
        System.out.println(sum);

    }
}
